home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
IRIX Base Documentation 1998 November
/
IRIX 6.5.2 Base Documentation November 1998.img
/
usr
/
share
/
catman
/
u_man
/
cat1
/
fpmode.z
/
fpmode
Wrap
Text File
|
1998-10-20
|
4KB
|
133 lines
FFFFPPPPMMMMOOOODDDDEEEE((((1111)))) FFFFPPPPMMMMOOOODDDDEEEE((((1111))))
NNNNAAAAMMMMEEEE
fpmode - run a command in specified floating point and/or memory mode
SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
ffffppppmmmmooooddddeeee precise|performance|smm|nsmm|spec|nonspec command [ arguments ]
DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
_f_p_m_o_d_e executes _c_o_m_m_a_n_d, forcing it to use the specified floating point
exception and memory access mode. This is only meaningful on processors
that support multiple modes. On these processors, the default mode is
usually performance mode (also called imprecise exception mode) and non-
sequential memory (nsmm) mode. On all other processors, the default is
precise exception and sequential (smm) mode.
The R8000 is the only processor which supports both a precise exception
mode and a performance mode. All other processors support only precise
exceptions, though automatic flushing of denormalized results to zero may
be controlled through the setting of the FS bit in the FP control and
status register by calling _s_e_t__f_p_c__c_s_r().
In precise exception mode, all floating point exceptions/interrupts are
reported on the instruction that caused the exception, so floating point
signal handlers can clean up the FP state and continue execution. In
performance mode, floating point interrupts are asynchronous and the
reported program counter is meaningless. Precise mode is provided as a
means of debugging processes and/or backward compatibility for programs
that have knowledge of the FP state. It causes significant performance
degradation.
When a program is run in performance mode on an R8000, the floating point
processor automatically flushes all denormalized results to zero
regardless of the setting of the FS (flush denormalized results to zero)
bit in the FP control and status register. This bit is turned on at
_e_x_e_c() time. Turning it off (by calling _s_e_t__f_p_c__c_s_r()) will cause
performance degradation. When the same program is run in precise mode,
the FS bit is turned off at _e_x_e_c() time (for backward compatibility with
older processors). Note that this means a given program may generate
different results when run in performance and precise modes.
Non-sequential memory access mode allows the processor to do floating
point and integer memory operations out of order, thus possibly providing
better performance. This is only supported on R8000 processors.
Turning on speculative execution (spec) mode tells the kernel to ignore
all memory access faults generated by the program. This mode is used by
the compiler to provide better performance in some cases by allowing
eager instruction scheduling. Note that this may also cause significantly
worse performance if used indiscriminately and should be avoided when
debugging since it masks potential problems.
PPPPaaaaggggeeee 1111
FFFFPPPPMMMMOOOODDDDEEEE((((1111)))) FFFFPPPPMMMMOOOODDDDEEEE((((1111))))
The floating point mode is inherited across _f_o_r_k() and _e_x_e_c() system
calls. To modify both exception and memory modes, use fpmode twice; e.g.,
fpmode precise fpmode smm command
SSSSEEEEEEEE AAAALLLLSSSSOOOO
syssgi(2), get_fpc_csr(3), set_fpc_csr(3).
WWWWAAAARRRRNNNNIIIINNNNGGGGSSSS
In the case of the following command
fpmode precise command1; command2
_f_p_m_o_d_e applies only to command1. The command
fpmode precise (command1; command2)
is syntactically incorrect.
PPPPaaaaggggeeee 2222